
package com.huaweicloud.saaslanding.install.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * 功能描述
 *
 * @since 2022-03-28
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode
@Accessors(chain = true)
public class CseConfigDto {
    // =============== 所有配置项都需要的数据 ===============
    /**
     * 应用名：数据库名
     */
    private String appName;

    /**
     * 微服务名：hsl-数据库名-微服务名字(deployment,service,配置项名)
     */
    private String serviceName;

    /**
     * 是否是网关微服务
     */
    private Boolean isGateway = false;

    /**
     * 是否是授权微服务（用于判断 hsl_cse_config 中的type）
     */
    private Boolean isAuthority = false;

    /**
     * 是否是部署微服务
     */
    private Boolean isDeployment = false;

    /**
     * 组件id（用于 hsl_cse_config）
     */
    private Long componentId;

    /**
     * oneaccess 域名
     */
    private String domain;

    /**
     * 是否是租户微服务
     */
    private Boolean isTenant = false;

    /**
     * 是否是升级微服务
     */
    private Boolean isUpgrade = false;

    /**
     * 是否是运维微服务
     */
    private Boolean isMaintenance = false;

    /**
     * 是否是集成开发微服务
     */
    private Boolean isIntegrated = false;

    // =============== 网关微服务配置项所需要的数据 ===============

    /**
     * 租户微服务名
     */
    private String tenantName;

    /**
     * 租户微服务访问前缀
     */
    private String tenantPath;

    /**
     * 授权微服务名
     */
    private String authorityName;

    /**
     * 授权微服务访问前缀
     */
    private String authorityPath;

    /**
     * 部署微服务名
     */
    private String deploymentName;

    /**
     * 部署微服务访问前缀
     */
    private String deploymentPath;

    /**
     * 升级微服务名
     */
    private String upgradeName;

    /**
     * 升级微服务访问前缀
     */
    private String upgradePath;

    /**
     * 运维微服务名
     */
    private String maintenanceName;

    /**
     * 运维微服务访问前缀
     */
    private String maintenancePath;

    /**
     * 集成开发微服务名
     */
    private String integratedName;

    /**
     * 集成开发微服务访问前缀
     */
    private String integratedPath;

    // =============== 其他配置项所需要的数据 ===============
    /**
     * 微服务端口
     */
    private Integer serverPort;

    /**
     * 微服务访问前缀
     */
    private String servletPath;

    // =============== 以下值各个微服务一致 ===============
    /**
     * rds ip
     */
    private String rdsIp;

    /**
     * rds port
     */
    private int rdsPort;

    /**
     * rds database
     */
    private String rdsDatabase;

    /**
     * rds userName
     */
    private String rdsUserName;

    /**
     * rds password(加密后)
     */
    private String rdsPassword;

    /**
     * redis host
     */
    private String redisHost;

    /**
     * redis port
     */
    private int redisPort;

    /**
     * redis Database
     */
    private String redisDatabase;

    /**
     * redis timeout
     */
    private String redisTimeout;

    /**
     * redis password(加密后)
     */
    private String redisPassword;

    /**
     * redis 连接池最大连接数（使用负值表示没有限制）
     */
    private int redisPoolMaxActive;

    /**
     * redis 连接池中的最大空闲连接
     */
    private int redisPoolMaxIdle;

    /**
     * redis 连接池最大阻塞等待时间（使用负值表示没有限制）
     */
    private int redisPoolMaxWait;

    /**
     * redis 连接池中的最小空闲连接
     */
    private int redisPoolMinIdle;

    /**
     * oneaccess域名
     */
    private String oneaccessDomain;

    /**
     * druid password(加密后)
     */
    private String druidPassword;

    /**
     * jasyptPassword
     */
    private String jasyptPassword;
}
